package com.job.DQH.dqh722.homework02;

import java.util.LinkedHashMap;
import java.util.Map;

//存放对Map进行操作的工具类
public class MapOperation {
    public static Map<Character,Integer> createMap(String str) throws PersonalException {

        if(str == null){//如果传入的字符串为空则报错
            throw new PersonalException("错误，传入的字符串为空！");
        }

        Map<Character,Integer> maps = new LinkedHashMap<>();
        for (int i = 0; i <str.length() ; i++) {
            if(Character.isUpperCase(str.charAt(i))||Character.isLowerCase(str.charAt(i))||Character.isDigit(str.charAt(i))){
                //先判断是否为数字或字母
                if(maps.get(str.charAt(i)) == null){//再判断是否已经在map中
                    maps.put(str.charAt(i),1);//若不在，添加此字符并将次数记为1
                }else{//若存在，则修改键值对
                    maps.put(str.charAt(i),maps.get(str.charAt(i))+1);
                }
            }
        }

        if(maps.isEmpty()){//如果字符串中不含字母或数字，即maps为空则报错
            throw new PersonalException("错误，传入的字符串中无字母或数字！");
        }

        return maps;
    }
}
